package com.hzlx.batch.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 物料批次及数量对象 mes_batches_material
 * 
 * @author ruoyi
 * @date 2025-07-07
 */
public class BatchesMaterial extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID，唯一标识物料批次 */
    private Long batchId;

    /** 物料ID，关联物料主表 */
    @Excel(name = "物料ID，关联物料主表")
    private Integer materialId;

    /** 供应商批次ID，可选的供应商侧批次标识 */
    @Excel(name = "供应商批次ID，可选的供应商侧批次标识")
    private String supplierBatchId;

    /** 初始数量，物料批次的初始数量 */
    @Excel(name = "初始数量，物料批次的初始数量")
    private BigDecimal initialQuantity;

    /** 当前数量，物料批次当前剩余数量 */
    @Excel(name = "当前数量，物料批次当前剩余数量")
    private BigDecimal currentQuantity;

    /** 计量单位，如个、千克等 */
    @Excel(name = "计量单位，如个、千克等")
    private String unitOfMeasure;

    /** 生产日期，物料的生产时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生产日期，物料的生产时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date productionDate;

    /** 过期日期，物料的过期时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "过期日期，物料的过期时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expirationDate;

    /** 入库时间，默认当前时间，记录物料入库时刻 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "入库时间，默认当前时间，记录物料入库时刻", width = 30, dateFormat = "yyyy-MM-dd")
    private Date inboundTime;

    /** 供应商ID，关联供应商主表 */
    @Excel(name = "供应商ID，关联供应商主表")
    private String supplierId;

    /** 存储位置ID，关联存储位置主表 */
    @Excel(name = "存储位置ID，关联存储位置主表")
    private String storageLocationId;

    /** 状态，默认InStock表示在库，可扩展其他状态 */
    @Excel(name = "状态，默认InStock表示在库，可扩展其他状态")
    private String status;

    /** 创建时间，记录记录创建时刻 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间，记录记录创建时刻", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 更新时间，记录最后一次更新时刻，数据更新时自动变更 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间，记录最后一次更新时刻，数据更新时自动变更", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    /** 计划数量，用于对比创建工单 */
    @Excel(name = "计划数量，用于对比创建工单")
    private BigDecimal planQuantity;

    public void setBatchId(Long batchId) 
    {
        this.batchId = batchId;
    }

    public Long getBatchId() 
    {
        return batchId;
    }

    public Integer getMaterialId() {
        return materialId;
    }

    public void setMaterialId(Integer materialId) {
        this.materialId = materialId;
    }

    public void setSupplierBatchId(String supplierBatchId)
    {
        this.supplierBatchId = supplierBatchId;
    }

    public String getSupplierBatchId() 
    {
        return supplierBatchId;
    }

    public void setInitialQuantity(BigDecimal initialQuantity) 
    {
        this.initialQuantity = initialQuantity;
    }

    public BigDecimal getInitialQuantity() 
    {
        return initialQuantity;
    }

    public void setCurrentQuantity(BigDecimal currentQuantity) 
    {
        this.currentQuantity = currentQuantity;
    }

    public BigDecimal getCurrentQuantity() 
    {
        return currentQuantity;
    }

    public void setUnitOfMeasure(String unitOfMeasure) 
    {
        this.unitOfMeasure = unitOfMeasure;
    }

    public String getUnitOfMeasure() 
    {
        return unitOfMeasure;
    }

    public void setProductionDate(Date productionDate) 
    {
        this.productionDate = productionDate;
    }

    public Date getProductionDate() 
    {
        return productionDate;
    }

    public void setExpirationDate(Date expirationDate) 
    {
        this.expirationDate = expirationDate;
    }

    public Date getExpirationDate() 
    {
        return expirationDate;
    }

    public void setInboundTime(Date inboundTime) 
    {
        this.inboundTime = inboundTime;
    }

    public Date getInboundTime() 
    {
        return inboundTime;
    }

    public void setSupplierId(String supplierId) 
    {
        this.supplierId = supplierId;
    }

    public String getSupplierId() 
    {
        return supplierId;
    }

    public void setStorageLocationId(String storageLocationId) 
    {
        this.storageLocationId = storageLocationId;
    }

    public String getStorageLocationId() 
    {
        return storageLocationId;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    public void setPlanQuantity(BigDecimal planQuantity) 
    {
        this.planQuantity = planQuantity;
    }

    public BigDecimal getPlanQuantity() 
    {
        return planQuantity;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("batchId", getBatchId())
            .append("materialId", getMaterialId())
            .append("supplierBatchId", getSupplierBatchId())
            .append("initialQuantity", getInitialQuantity())
            .append("currentQuantity", getCurrentQuantity())
            .append("unitOfMeasure", getUnitOfMeasure())
            .append("productionDate", getProductionDate())
            .append("expirationDate", getExpirationDate())
            .append("inboundTime", getInboundTime())
            .append("supplierId", getSupplierId())
            .append("storageLocationId", getStorageLocationId())
            .append("status", getStatus())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .append("planQuantity", getPlanQuantity())
            .toString();
    }
}
